/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tbp.controle;

import br.com.tbp.exception.PersistenciaException;
import br.com.tbp.model.domain.Consultor;
import br.com.tbp.model.domain.Empresa;
import br.com.tbp.model.domain.ItemDePedido;
import br.com.tbp.model.domain.Pedido;
import br.com.tbp.model.domain.StatusPedido;
import br.com.tbp.model.domain.constant.CondicaoDaLinha;
import br.com.tbp.persitence.FabricaDePersistencia;
import br.com.tbp.persitence.dao.PedidoDao;
import br.com.tbp.persitence.dao.SituacaoDoPedidoDao;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Diego Freire
 */
public class ControlePedido {

    public void registrar(Pedido p) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        dao.registrar(p);
    }

    public void atualizar(Pedido p) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        dao.atualizar(p);
    }

    public void removerPedidoPelaEmpresa(Empresa e) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        dao.removerPedidoPelaEmpresa(e);
    }

    public void removerPedidoPeloConsultor(Consultor c) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        dao.removerPedidoPeloConsultor(c);
    }

    public Pedido pesquisar(long id) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.pesquisar(id);
    }

    public List<Pedido> pesquisarPelaEmpresa(String nome) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.pesquisarPelaEmpresa(nome);
    }

    public List<Pedido> pesquisar(Date d1, Date d2) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.pesquisar(d1, d2);
    }

    public List<Pedido> pesquisarPeloCnpj(String cnpj) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.pesquisarPeloCnpj(cnpj);
    }

    public List<Pedido> pesquisarPelaSituacao(StatusPedido s) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.pesquisarPelaSituacao(s);
    }

    public List<Pedido> pesquisar(int limit_1, int limit_2) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.pesquisar(limit_1, limit_2);
    }

    public List<Pedido> pesquisar() throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.pesquisar();
    }

    public void recuperaItensDePedido(Pedido p) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        dao.recuperaItensDePedido(p);
    }

    public void recuperaSituacoesDoPedido(Pedido p) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        dao.recuperaSituacoesExternasDoPedido(p);
    }

    public void remover(long id) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        dao.remover(id);
    }

    public void recuperaSituacoesInternasDoPedido(Pedido p) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        dao.recuperaSituacoesInternasDoPedido(p);
    }

    public int buscaTotalPorCondicao(CondicaoDaLinha c, Date inicio, Date fim) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.buscaTotalPorCondicao(c, inicio, fim);
    }

    public int buscaTotalPortIn(Date inicio, Date fim) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.buscaTotalPortIn(inicio, fim);
    }

    public List<StatusPedido> pesquisarStatusDisponiveis() throws PersistenciaException {
        SituacaoDoPedidoDao dao = FabricaDePersistencia.createSituacaoDoPedidoDao();
        return dao.pesquisar();
    }

    public List<ItemDePedido> getAtivacoesPelaData(Date _1, Date _2) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.getAtivacoesPelaData(_1, _2);
    }

    public void atualizarAtivacoes(List<ItemDePedido> itensList) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        dao.atualizarAtivacoes(itensList);
    }
    
    public Pedido pesquisar(long id, Consultor consultor) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.pesquisar(id, consultor);
    }

    public List<Pedido> pesquisarPelaEmpresa(String nome, Consultor consultor) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.pesquisarPelaEmpresa(nome, consultor);
    }

    public List<Pedido> pesquisarPeloCnpj(String cnpj, Consultor consultor) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.pesquisarPeloCnpj(cnpj, consultor);
    }

    public List<Pedido> pesquisar(Date d1, Date d2, Consultor consultor) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.pesquisar(d1, d2, consultor);
    }
    
    public List<Pedido> pesquisar(int limit_1, int limit_2, Consultor consultor) throws PersistenciaException {
        PedidoDao dao = FabricaDePersistencia.createPedidoDao();
        return dao.pesquisar(limit_1, limit_2, consultor);
    }
}
